#include <head.h>
/*
    结构体解析：struct dirent

    struct dirent 是在 Linux/Unix 系统中用于表示目录条目的结构体。
    当你使用 readdir() 函数读取目录时，每次读取的结果都会存放在一个 struct dirent 结构体中。

    struct dirent 定义（通常位于 <dirent.h> 头文件中）：

    struct dirent {
        ino_t          d_ino;        inode 编号
        off_t          d_off;        在目录中的偏移
        unsigned short d_reclen;     目录条目的长度
        unsigned char  d_type;       文件类型
        char           d_name[256];  文件名
    };
*/

int main(int argc, const char *argv[])
{
    DIR *dir;
    struct dirent *entry;

    // 打开当前目录
    dir = opendir(".");
    if (dir == NULL)
    {
        perror("无法打开目录");
        return 1;
    }

    // 读取目录中的每个条目
    while ((entry = readdir(dir)) != NULL)
    {
        printf("inode:%lu\t文件名:%s\t类型:", entry->d_ino, entry->d_name);
        /*
            %lu: 在 printf 中，%lu 表示“无符号长整型” (unsigned long) 数据类型。
            它告诉 printf 函数从参数中获取一个 unsigned long 类型的值，并以十进制格式输出。
        */
        // 根据 d_type 判断文件类型
        switch (entry->d_type)
        {
        case DT_REG:
            printf("常规文件\n");
            break;
        case DT_DIR:
            printf("目录\n");
            break;
        case DT_LNK:
            printf("符号链接\n");
            break;
        default:
            printf("其他\n");
            break;
        }
    }

    // 关闭目录
    closedir(dir);
    return 0;
    return 0;
}